﻿using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using Entidades;
using AccesoDatos.DAO;
using AccesoDatos.IDAO;

namespace CapaDeGestion
{
    public class GestionUsuario:IGestionUsuario
    {
        #region Variables
        private IDaoUsuario daoUsu = new DaoUsuario();
        #endregion

        #region Metodos
        public IList<Usuario> SeleccionarPorUsuarioYContrasena(string usuario, string contrasena)
        {
            IList<Usuario> lista = daoUsu.SeleccionarPorUsuarioYContrasena(usuario, contrasena);
            return lista;
        }

        public bool ValidarUsuario(string usuario, string contrasena)
        {
            IList<Usuario> usuarioValidar = daoUsu.SeleccionarPorUsuarioYContrasena(usuario, contrasena);
            if(usuarioValidar.Count == 0)
            {
                return false;
            }
            return true;
        }

        public IList<Usuario> BuscarNombreUsuario (string nombre)
        {
            return daoUsu.BuscarPorNombreUsuario(nombre);
        }

        public bool BuscarPorNombreUsuario(string nombre)
        {
            IList<Usuario> usuarioPregunta = daoUsu.BuscarPorNombreUsuario(nombre);
            if (usuarioPregunta.Count == 0)
            {
                return false;
            }
            return true;
        }

        public string EncriptarContrasena (string contrasena)
        {
            MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
            byte[] bs = Encoding.UTF8.GetBytes(contrasena);
            bs = x.ComputeHash(bs);
            StringBuilder s = new StringBuilder();
            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2").ToLower());
            }
            String hash = s.ToString();
            return hash;
        }

        public IList<Usuario> SeleccionarTodos()
        {
            IList<Usuario> listaUsuarios=daoUsu.SeleccionarTodos();
            return listaUsuarios;

        }

        public void Insertar(Usuario a)
        {
            daoUsu.Insertar(a);
        }

        #endregion


    }
}
